//
//  verificationCutTraj.h
//  map-matching
//
//  Created by Lv Xin on 16/5/10.
//  Copyright © 2016年 Lv Xin. All rights reserved.
//
//  Personal Homepage: www.davidlvxin.com

#ifndef verificationCutTraj_h
#define verificationCutTraj_h

#include <stdio.h>
#include "verificationStrategy.h"

class CutTraj : public Verification{
    int splitSize;
    double maxSimPoint;
    Map* mapSet;
    Trajectary& traj;
    std::vector<int> splitTarget;//分割点并入前一段小轨迹
    std::vector< std::list<Route*> > splitRoute;
    std::vector<GenerateTrajectory> maxSmallSimRoute;
    std::vector<double> maxSmallSim;
    GenerateTrajectory maxSimRoute;
public:
    CutTraj(bool u, Map*, Trajectary&);
    ~CutTraj();
    void computeMaxSim();
    void cutRoute();
    void generateSmallTrajRoute(int);
    void computeSmallRouteMaxSim(int, Route*);
    void combineAllSmallRoute();
    int ArgOnePoint(int);
    GenerateTrajectory getMaxSim();
};

#endif /* verificationCutTraj_h */
